const path = require("path");
// 引入html生成插件
const HtmlWebpackPlugin = require("html-webpack-plugin");
const { CleanWebpackPlugin } = require("clean-webpack-plugin");

module.exports = {
  // 当前环境
  // mode: 'development',

  // 入口文件
  entry: "./src/index.ts",

  // 输出配置
  output: {
    path: path.resolve(__dirname, "dist"),
    filename: "bundle.js",
    // 告诉webpack不使用箭头
    environment: {
      arrowFunction: false
    }
  },

  // 识别引入文件类型
  resolve: {
    extensions: [".ts", ".js"]
  },

  // 指定webpack打包时使用的模块
  module: {
    // 指定加载规则
    rules: [
      // 配置babel，写在ts加载器之前
      {
        test: /\.ts$/,
        use: [
          {
            // 指定加载器
            loader: "babel-loader",
            // 设置babel
            options: {
              // 预定义环境
              presets: [
                [
                  // 环境插件
                  "@babel/preset-env",
                  // 配置信息
                  {
                    // 需要兼容的浏览器版本
                    "targets": {
                      "chrome": "88",
                      "ie": "11"
                    },
                    // 指定corejs版本
                    "corejs": "3",
                    // 使用corejs方式，’按需加载‘
                    "useBuiltIns": "usage"
                  }
                ]
              ]
            }
          },
          {
            loader: "ts-loader"
          }
        ],
        exclude: /node_modules/
      }
    ]
  },
  // webpack插件配置
  plugins: [
    new CleanWebpackPlugin(),
    new HtmlWebpackPlugin({
      title: 'TS测试',
      template: './src/moban.html'
    }),
  ]

}